public class test {
    public static void main(String[] args) {
        //>> 操作符
        //>>运算符的操作数有两个，运算规则是将左操作数的各个二进制位向右移动右操作数值位，
        // 符号位由原来符号补上
    /*    byte a = 2;
        // 0000 0010
        //a>>1
        // 0 0000 001   //0补上原符号位
        //0000 0001
        System.out.println(a>>1);
        byte a2 = - 3;
        //1000 0011 --原码
        //1111 1101 --补码
        //右移一位，符号位不变
        //1  1111  110
        //1111 1110--补码
        //1000 0010-- 原码  结果为-2
        System.out.println(a2>>1);*/
        // << 运算符的操作数亦有两个，运算规则是将左操作数的各个二进制位向左移动右操作数数值位，空出的位补0
       /* byte a1 = 3;

        *//*0000 0011
        a1<< 1
        000 0011 0
        0000 0110 ————转化为十进制为：6*//*

        System.out.println(a1<<1);
       byte b1 = -3;
       //  1000 0011-- 原码
       //  1111 1101 -- 补码
      //    111 1101 0  ---左移一位补0
        //  1111 1010  --补码
        //  1000 0110  结果为-6
        System.out.println(b1<<1);*/
     //  >>> 此运算符与>>运算符的不同之处在于>>>运算符是无符号右移，即补符号位时，只补0
      /*  byte a1 = -3;
        // 1000 0011 -----原码
        // 1111 1101 ------补码
        //a1>>>1 无符号右移一位
        // 0 1111 110
        //0111 1110 结果为：126
        System.out.println(a1>>>1);  //出现这个结果说明，变量在无符号右移时，自动转化成int类型
        System.out.println(Integer.MAX_VALUE);*/
/*//    赋值运算符
        // 赋值运算符 =
        byte a = 5;  //意为将5赋值给变量a
        // +=
        a+=5;
        //a+=5,是一种简写，展开为：
        //a = a+5 ;
        // -=
        a-=3;
        //同理，展开为：a =a-3;
        //*=
        a*=3;
        //同上，展开为：a=a*3;
        // /=
        a/=2;
        //同上，展开为：a=a/2;

        //%=
        a%=2;
        //同上,展开为：a = a%2;
        */
//  三目运算符
     /*   int c=  5>0?3:2;
        System.out.println(c);
*/
        //按位与可当作逻辑与操作符，二者的差别在于前者没有短路
     /*   System.out.println(3>0&4>0);
        System.out.println(3>0&10/0>1);*/
   // 按位或可当作逻辑或操作符，二者差别在于前者没有短路
        System.out.println(3<0|5>3);
        System.out.println(3>0|10/0>2);
























    }
}
